package com.yp.lession.redisqf211.config;

import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author: COS
 * @time: 2022/3/25 9:20
 * @description:
 * mybatis-plus 的配置文件局集中所有关于mybatis-plus配置在里面包括MapperScan
 *
 * ssm 通过bean标签完成 springboot通过java类完成 配置类
 * bean id class =>pro
 *
 * springboot 的配置类没有方法
 * 配置是需要根据使用框架,插件来决定的
 *
 */
@Configuration
@MapperScan(basePackages = "com.yp.lession.redisqf211.dao")
public class MyBatisPlusConfig {
    /**
     *
     * @author: COS
     * @return:
     * @time: 2022/3/25 9:26
     * @description:
     *  需要提供MybatisPlusInterceptor 对象
     *  这个对象就是MybatisPlus插件的集合体
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        /*
        <bean class="MybatisPlusInterceptor">
              <property name="interceptors">
                    <list>
                        <ref bena="page"/>
                    </list>
              </property>
        </bean>
        <bean id="page" class="PaginationInnerInterceptor">
            <property name="Overflow" value="true" />
        </bean>
        */
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        //加入插件 直接调用提供插件对象的方法
        interceptor.addInnerInterceptor(getPaginationInnerInterceptor());
        //返回MybatisPlusInterceptor
        return interceptor;
    }

    /**
     *
     * @author: COS
     * @return:
     * @time: 2022/3/25 9:28
     * @description:  仅是上面的方法需要使用 不写bean
     */
    public PaginationInnerInterceptor getPaginationInnerInterceptor(){
        //创建分页插件对象
        PaginationInnerInterceptor p = new PaginationInnerInterceptor();
        //设置属性参数
        p.setOverflow(true);
        //返回对象给spring ->MybatisPlus的starter 包的诶之文件去读取配置
        return p;
    }


}
